structural_integrator Derived Type

type, public, abstract :: structural_integrator

Base class for linear structural time integrators.


Contents


Type-Bound Procedures

procedure, public :: solve => integrator_solve

Advances a state through successive columns of a force history.

  • private subroutine integrator_solve(this, forces, dt, displacement, velocity, acceleration)

    Advances through a force history with one column per time point. The number of steps is size(forces, 2) - 1; only the final state is returned.

    Arguments

    Type IntentOptional Attributes Name
    class(structural_integrator), intent(inout) :: this

    Initialized dense or sparse integrator.

    real(kind=real64), intent(in), dimension(:,:) :: forces

    N-by-(number of steps + 1) array of external forces.

    real(kind=real64), intent(in) :: dt

    Positive constant time step.

    real(kind=real64), intent(inout), dimension(:) :: displacement

    Initial state on input, final state on output.

    real(kind=real64), intent(inout), dimension(:) :: velocity

    Initial state on input, final state on output.

    real(kind=real64), intent(inout), dimension(:) :: acceleration

    Initial state on input, final state on output.

procedure(integrator_step), public, deferred, pass :: step

Advances the state by one time step.

  • subroutine integrator_step(this, force_current, force_next, dt, displacement, velocity, acceleration) Prototype

    Arguments

    Type IntentOptional Attributes Name
    class(structural_integrator), intent(inout) :: this

    The [[structural_integrator]] object.

    real(kind=real64), intent(in), dimension(:) :: force_current

    External N-vector at the beginning of the step.

    real(kind=real64), intent(in), dimension(:) :: force_next

    External N-vector at the end of the step.

    real(kind=real64), intent(in) :: dt

    Positive step size .

    real(kind=real64), intent(inout), dimension(:) :: displacement

    N-vector state at the start of the step, overwritten with the end state.

    real(kind=real64), intent(inout), dimension(:) :: velocity

    N-vector state at the start of the step, overwritten with the end state.

    real(kind=real64), intent(inout), dimension(:) :: acceleration

    N-vector state at the start of the step, overwritten with the end state.